package com.rzcode.coinex.kernel.dao.entity;

import com.baomidou.mybatisplus.annotation.TableName;
import com.rzcode.coinex.kernel.common.enums.BooleanEnum;
import com.rzcode.coinex.kernel.common.enums.PrtRewardTypeEnum;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 推广奖励设置实体类，用于管理推广活动的奖励规则。
 *
 * @author Bridge.Xu
 * @date 2020年03月08日
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "reward_Promotion_setting")
public class RewardPromotionSetting {

    /**
     * 唯一标识ID，自动生成。
     */
    @ApiModelProperty(value = "唯一标识ID，自动生成")
    private Long id;

    /**
     * 关联的币种，如果是币币交易推广则可为空。
     */
    @ApiModelProperty(value = "关联的币种，如果是币币交易推广则可为空")
    private Coin coin;

    /**
     * 推广活动的状态，启用或禁用。
     */
    @ApiModelProperty(value = "推广活动的状态，启用或禁用")
    private BooleanEnum status = BooleanEnum.IS_FALSE;

    /**
     * 推广奖励类型。
     */
    @ApiModelProperty(value = "推广奖励类型")
    private PrtRewardTypeEnum type;

    /**
     * 推广奖励的具体信息，如比例或固定值。
     */
    @ApiModelProperty(value = "推广奖励的具体信息，如比例或固定值")
    private String info;

    /**
     * 推广奖励生效的时间长度，单位为天。
     */
    @ApiModelProperty(value = "推广奖励生效的时间长度，单位为天")
    private int effectiveTime = 0;

    /**
     * 推广奖励设置的最后更新时间。
     */
    @ApiModelProperty(value = "推广奖励设置的最后更新时间")
    private LocalDateTime updateTime;

    /**
     * 最近更改此设置的管理员。
     */
    @ApiModelProperty(value = "最近更改此设置的管理员")
    private Admin admin;

    /**
     * 临时字段，用于验证和展示，不持久化。
     */
    @ApiModelProperty(value = "临时字段，用于验证和展示，不持久化")
    private BigDecimal one;

    /**
     * 临时字段，用于验证和展示，不持久化。
     */
    @ApiModelProperty(value = "临时字段，用于验证和展示，不持久化")
    private BigDecimal two;
}
